#include <stdio.h>
#include <getch.h>
#include <stdlib.h>
#include "system.h"
#include "struct.h"
#include "teacher.h"
#include "admin.h"
#include "student.h"



void init(void)//初始化 读取文件中的数据
{
	stu = calloc(MAX,sizeof(Student));
	tea = calloc(MAX,sizeof(Teacher));
	adm = calloc(1,sizeof(Admin)); //申请堆内存
	
	FILE* afrp = fopen("admin.txt","r");		//打开文件
	fscanf(afrp,"%s %s",adm[0].id,adm[0].passwd);	//读取校长数据
	fclose(afrp);
	
	FILE* sfrp = fopen("stu.txt","r");	//打开文件
	for(int i=0; i<MAX; i++)
	{
		fscanf(sfrp,"%s %c %s %s %f %f %f %d %d",stu[i].name,&stu[i].sex,stu[i].id,stu[i].passwd,&stu[i].chinese,&stu[i].english,&stu[i].math,&stu[i].cnt,&stu[i].exist);	//读取学生数据
	}
	fclose(sfrp);
	
	FILE* tfrp = fopen("tea.txt","r");//打开文件
	for(int i=0; i<MAX; i++)
	{
		fscanf(tfrp,"%s %c %s %s %d %d",tea[i].name,&tea[i].sex,tea[i].id,tea[i].passwd,&tea[i].cnt,&tea[i].exist);//读取老师数据
	}
	fclose(tfrp);
	
	
}



char system_menu(void)
{
	system("clear");	
	puts("***欢迎使用学生管理系统***");
	puts("1、进入学生系统");
	puts("2、进入教师系统");
	puts("3、进入校长系统");
	puts("4、退出系统");
	puts("************************");
	puts("请输入指令:");
	char ch = getch();
	printf("%c\n",ch);
	return ch;
}

void enter(void) //进入子系统
{	

	for(;;)
	{
		switch(system_menu())
		{
			case '1':	student(); 			break;
			case '2':	teacher(); 			break;
			case '3':	admin();			break;
			case '4':	return;
		}
	}

}
void system_exit(void)//退出 把结构体中的数据保存到文件中
{
	FILE* afwp = fopen("admin.txt","w");	//打开文件
	fprintf(afwp,"%s %s",adm[0].id,adm[0].passwd);//读取校长数据
	fclose(afwp);
	
	FILE* sfwp = fopen("stu.txt","w");//打开文件
	for(int i=0; i<MAX; i++)
	{
		if(stu[i].sex != 0)
		{
			fprintf(sfwp,"%s %c %s %s %f %f %f %d %d\n",stu[i].name,stu[i].sex,stu[i].id,stu[i].passwd,stu[i].chinese,stu[i].english,stu[i].math,stu[i].cnt,stu[i].exist);//读取学生数据
		}
	}
	fclose(sfwp);
	
	FILE* tfwp = fopen("tea.txt","w");//打开文件
	for(int i=0; i<MAX; i++)
	{
		if(tea[i].sex != 0)
		{
			fprintf(tfwp,"%s %c %s %s %d %d\n",tea[i].name,tea[i].sex,tea[i].id,tea[i].passwd,tea[i].cnt,tea[i].exist);//读取老师数据
		}	
	}
	fclose(tfwp);
	free(stu);
	free(tea);
	free(adm);
}



